#include <Python.h>

static PyObject *is_palindrome(PyObject *self, PyObject *args) {
    int i, n;
    const char *text;
    int result;
    /* "s"表示一个字符串:*/
    if (!PyArg_ParseTuple(args, "s", &text)) {
        return NULL;
    }
    /* 与旧版的代码大致相同:*/
    n = strlen(text);
    result = 1;
    for (i = 0; i <= n/2; ++i) {
        if (text[i] != text[n-i-1]) {
            result = 0;
            break;
        }
    }
    /* "i"表示一个整数:*/
    return Py_BuildValue("i", result);
}

/* 方法/函数列表:*/
static PyMethodDef PalindromeMethods[] = {
    /*名称、函数、参数类型、文档字符串 */
    {"is_palindrome", is_palindrome, METH_VARARGS, "Detect palindromes"},
    /* 列表结束标志:*/
    {NULL, NULL, 0, NULL}
};

static struct PyModuleDef palindrome2 =
{
    PyModuleDef_HEAD_INIT,
    "palindrome2",   /* 模块名 */
    "",             /* 文档字符串 */
    -1,             /*存储在全局变量中的信号状态 */
    PalindromeMethods
};

/* 初始化模块的函数:*/
PyMODINIT_FUNC PyInit_palindrome2(void)
{
    return PyModule_Create(&palindrome2);
}
